#ifndef CLIP_HH_
# define CLIP_HH_


/** Clip: bullet extern storage
 ** => flamethrower / Shotgun do *NOT* have any Clip
 */
class Clip : public Item
{
public:
  Clip();
  ~Clip();

  /** plays refill annimation
   ** enable break between each bullet
   ** allow drop bullet ?
   ** \return nb bullet added
   */
  unsigned char refill();

  /** if _pierced && _transparent are false :
   **   allow seeing if there are Bullets in it
   **   meaning removing the clip and see it from upper side
   **
   ** if _pierced is true :
   **   allow user to see how much bullets left in it
   **   meaning rotate the gun over y axe, while eject the clip
   **   keep the clip between the gun and user other hand
   **
   ** if _transparent && Gun._apparentClip are true :
   **   rotate te gun over y axe
   **
   ** NOTE: transparent clips are usually designed for riffles
   **   pierced ones for handguns
   */
  void checkStatus();


private:
  /** 'encoche' for 3 firsts bullets, then one hole per bullet
   ** NOTE: changes check annimation
   */
  bool _pierced;

  /** plexiglass-like clip, allows full capacity sight
   */
  bool _transparent;
  unsigned char _capacity; /// max bullet capacity
  unsigned char _nbBullet; /// nb ammo in it

  /** caliber of stored bullets
   ** *MUST* match Barrel _bulletType && Bullet _caliber
   */
  unsigned char _bulletType;
};

#endif /* !CLIP_HH_ */
